﻿<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
</head>
<body>

<?php
//==========================================================================================
//==========================================================================================
// Модуль производит запись настроек для работы с базой в файл MySQLSettings.php
// А также создание таблиц и первичное заполнеие базы данных
//==========================================================================================

require 'MySQLSettings.php';

class MyProject1Install{
        
        //========================================================================================
        //-- Производит проверку настроек проекта
        //========================================================================================
        public function __construct(){
                //--Если заполнялась форма настроек вызываем функцию записи в файл
                if(isset($_POST['server_name'])){ $this->WriteSettingsToFile(); exit;}
                //--Проверяем настройки подключения к СУБД
                $link=mysqli_connect(MySQLSettings::hostname, MySQLSettings::username,MySQLSettings::password ) or print "Could not link";
                if($link){
                        //--Проверяем существует ли база данных
                        if(mysqli_select_db($link,MySQLSettings::databasename)){
                                print("База данных ".MySQLSettings::databasename." уже существует!</ br>");
                                
                        }
                        mysqli_close($link);
                        //--Соответствует ли рабочий каталог из настроек каталогу размещения файла install.php
                        if($_SERVER['SCRIPT_NAME']==(MySQLSettings::servercatalog).'/install.php'){
                                $this->ShowParametersForm('READONLY');
                                //--Форма запуска создания и первичной настройки базы
                                echo "<form method=POST>Внимание! стартовая настройка удалит все имеющиеся данные<br><INPUT TYPE=SUBMIT NAME=btRun VALUE=\"Произвести стартовую настройку базы\"></form>";
                                if($_POST['btRun']){
                                        $this->MySQLInit();
                                }
                        }else{
                                //--Рабочий каталог из настроек не соответстует текущему
                                print("Catalog not Exist</ br>");
                                $this->ShowParametersForm();
                                exit;
                        }
                }else{
                        //--Неправильно заданы параметры подключния к СУБД
                        $this->ShowParametersForm();
                        exit;
                }
        }
        
        //========================================================================================
        //-- Если неправильно заданы параметры показываем окно регистрации
        //========================================================================================
        private function ShowParametersForm($form_type='READWRITE'){
                if($form_type=='READONLY'){
                        $readonly='readonly';
                        print("<table style=\"background-color:#E0E0E0\">");
                        print ("<tr><td colspan=2><font color=000000><h3>Файл MySQLSettings.php сохранен с такими параметрами:</h3></font></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Сервер MySQL: </b></font></td><td> <INPUT TYPE=TEXT NAME=server_name value=\"".MySQLSettings::hostname."\" $readonly></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Имя пользователя: </b></font></td><td> <INPUT TYPE=TEXT NAME=username value=\"".MySQLSettings::username."\" $readonly></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Пароль: </b></font></td><td><INPUT TYPE=PASSWORD NAME=user_pwd value=\"".MySQLSettings::password."\" $readonly></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Имя базы данных: </b></font></td><td> <INPUT TYPE=TEXT NAME=database value=\"".MySQLSettings::databasename."\" $readonly></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Папка проекта на сервере: </b></font></td><td> <INPUT TYPE=TEXT NAME=server_catalog value=\"".MySQLSettings::servercatalog."\" $readonly></td></tr>\n");
                        print ("<tr><td>&nbsp</td><td>&nbsp</td></tr>\n</table>\n");
                }else{
                        $readonly='';
                        echo "<form method=POST>";
                        print("<center><table style=\"background-color:#E0E0E0\">");
                        print ("<tr><td colspan=2><font color=000000><h3>Подключение к серверу MySQL. Внесите настройки в форму или в файл MySQLSettings.php</h3></font></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Сервер MySQL: </b></font></td><td> <INPUT TYPE=TEXT NAME=server_name value=\"".MySQLSettings::hostname."\"></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Имя пользователя: </b></font></td><td> <INPUT TYPE=TEXT NAME=username value=\"".MySQLSettings::username."\"></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Пароль: </b></font></td><td><INPUT TYPE=PASSWORD NAME=user_pwd value=\"".MySQLSettings::password."\"></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Имя базы данных: </b></font></td><td> <INPUT TYPE=TEXT NAME=database value=\"".MySQLSettings::databasename."\"></td></tr>\n");
                        print ("<tr><td><font color=000066><b>Папка проекта на сервере: </b></font></td><td> <INPUT TYPE=TEXT NAME=server_catalog value=\"".MySQLSettings::servercatalog."\"></td></tr>\n");
                        print ("<tr><td>&nbsp</td><td>&nbsp</td></tr>\n");
                        print ("<tr><td colspan=2><INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Сохранить измения в MySQLSettings.php\"></td></tr></table></center>\n");
                        echo "</form>";
                        exit;
                }
        }
        
        //========================================================================================
        //-- Записываем значения из формы в файл
        //========================================================================================
        private function WriteSettingsToFile(){
                $password=$_POST['user_pwd'];
                $hostname=$_POST['server_name'];
                $database=$_POST['database'];
                $username=$_POST['username'];
                $catalog=$_POST['server_catalog'];
                if($handle = fopen("./MySQLSettings.php", "w")){
                fwrite($handle, "<?php \r\n \r\nclass MySQLSettings{\r\n");
                fwrite($handle, "const  hostname = '{$hostname}';\r\n");
                fwrite($handle, "const  databasename = '{$database}';\r\n");
                fwrite($handle, "const  username = '{$username}';\r\n");
                fwrite($handle, "const  password = '{$password}';\r\n");
                fwrite($handle, "const  servercatalog = '{$catalog}';\r\n");
                fwrite($handle, "}");
                fclose($handle);
                header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']);
                }else{
                        print ('Can not open file');
                }
        }
        
        //========================================================================================
        //-- Записываем в базу стартовые настройки
        //========================================================================================
        private function MySQLInit(){
                print("Имя администратора:admin, пароль:123<br>");
                print("Имя пользователя:user, пароль:123<br>");
                $k=0;
                $link=mysqli_connect(MySQLSettings::hostname, MySQLSettings::username,MySQLSettings::password ) or print "Could not link";
                
                //Создание и выбор базы данных
                if(mysqli_query($link,$q="drop database if exists ".MySQLSettings::databasename)){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="create database ".MySQLSettings::databasename." CHARACTER SET utf8")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_select_db($link,MySQLSettings::databasename)){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                //Установка таблицы символов
                if(mysqli_query($link,$q="set names utf8")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
		//Создание и заполнение таблицы users
                if(mysqli_query($link,$q="DROP TABLE IF EXISTS users")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="CREATE table users(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, time_change TIMESTAMP,user_name VARCHAR(255), user_pwd VARCHAR(255),block BOOL NOT NULL, deleted BOOL NOT NULL)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into users(user_name, user_pwd, block, deleted) VALUES('admin','qagmVGrC2XdvM',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into users(user_name, user_pwd, block, deleted) VALUES('user','qagmVGrC2XdvM',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                //Создание и заполнение таблицы pages
                if(mysqli_query($link,$q="DROP TABLE IF EXISTS pages")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="CREATE table pages(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, time_change TIMESTAMP,page_name VARCHAR(255) CHARACTER SET utf8,page_address VARCHAR(255), parent_id  INT UNSIGNED, page_body TEXT , dynamic BOOL NOT NULL, deleted BOOL NOT NULL)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into pages(page_name,page_address,parent_id , page_body, dynamic,deleted) VALUES('Главная','".MySQLSettings::servercatalog."pages', 0,'',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into pages(page_name,page_address,parent_id , page_body, dynamic,deleted) VALUES('Интерфейс администратора','".MySQLSettings::servercatalog."admin', 1,'',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into pages(page_name,page_address,parent_id , page_body, dynamic,deleted) VALUES('Редактор пользователей','".MySQLSettings::servercatalog."admin/edituser', 2,'',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into pages(page_name,page_address,parent_id , page_body, dynamic,deleted) VALUES('Редактор страниц','".MySQLSettings::servercatalog."admin/editpage', 2,'',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into pages(page_name,page_address,parent_id , page_body, dynamic,deleted) VALUES('Редактор групп','".MySQLSettings::servercatalog."admin/editgroup', 2,'',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into pages(page_name,page_address,parent_id , page_body, dynamic,deleted) VALUES('Редактор прав','".MySQLSettings::servercatalog."admin/editrights', 2,'',0,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into pages(page_name,page_address,parent_id , page_body, dynamic,deleted) VALUES('Новая страница','".MySQLSettings::servercatalog."pages/show/new1', 1,'',1,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                //Создание и заполнение таблицы groups
                if(mysqli_query($link,$q="DROP TABLE IF EXISTS groups")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="CREATE table groups(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, time_change TIMESTAMP,group_name VARCHAR(255), deleted BOOL)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into groups(group_name, deleted) VALUES('ALL', 0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into groups(group_name, deleted) VALUES('ADMINS', 0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                //Создание и заполнение таблицы useringroup
                if(mysqli_query($link,$q="DROP TABLE IF EXISTS useringroup")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="CREATE table useringroup(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, time_change TIMESTAMP,group_id INT UNSIGNED,user_id INT UNSIGNED, deleted BOOL)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into useringroup(group_id, user_id, deleted) VALUES(1,1 ,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into useringroup(group_id, user_id, deleted) VALUES(2, 1 ,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into useringroup(group_id, user_id, deleted) VALUES(1,2 ,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                //Создание и заполнение таблицы rights
                if(mysqli_query($link,$q="DROP TABLE IF EXISTS rights")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="CREATE table rights(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, time_change TIMESTAMP,group_id INT UNSIGNED,page_id INT UNSIGNED, deleted BOOL)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into rights(group_id, page_id, deleted) VALUES(1,1 ,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into rights(group_id, page_id, deleted) VALUES(2,2 ,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                if(mysqli_query($link,$q="INSERT into rights(group_id, page_id, deleted) VALUES(2,1 ,0)")){print ($q." <font color=GREEN><b>OK</b></font><br>\n");}else {print ($q." <font color=RED><b>ERROR</b></font><br>\n");  $k++;}
                
                if($k==0){
                        print (" <font color=GREEN><b>Стартовая база создана успешно! Можно приступать к тестированию.</b></font><br>\n");
                }else{
                        print (" <font color=RED><b>Во время настройки базы возникли ошибки!</b></font><br>\n");
                }
                mysqli_close($link);
        }
}

$inst= new MyProject1Install();
